import { Notifications } from './configs';
import core from './core/core';
import Mediator from './core/mvc/Mediator';
import Proxy from './core/mvc/Proxy';
import Controller from './core/mvc/Controller';
import Entity from './core/ecs/Entity';
import Entity2D from './core/ecs/Entity2D';
import TimerSystem from './core/ecs/TimerSystem';
import ResManager from './managers/res-manager';;
import UIManager from './managers/ui-manager';;
import SceneManager from './managers/scene-manager';;
import AudioManager from './managers/audio-manager';
import NetManager from './managers/net-manager';;
import * as utils from './utils';
import * as decorators from "./utils/decorators";
import {
    HeadUpDisplay,
    SortingGroup,
    TweenSwitcher,
    ResCollector,
    Transformer
} from "./components";
import {
    ItemList, __IItem,
    LoadingPage,
    NetCover
} from './ui';

declare type IItem<data> = __IItem<data>;

export {

    // constants
    Notifications,

    // base
    core,

    // mvc,ecs members
    Mediator, Proxy,
    Controller,
    Entity, Entity2D,
    TimerSystem,

    // components
    HeadUpDisplay,
    TweenSwitcher,
    SortingGroup,
    ResCollector,
    Transformer,

    // managers
    ResManager,
    UIManager,
    SceneManager,
    NetManager,
    AudioManager,

    // ui
    ItemList,
    IItem,
    LoadingPage,
    NetCover,

    // modules
    utils,
    decorators,
}